[翻译4.5] Softmax classification

在逻辑回归问题中我们可以让模型回答yes-no的问题。现在如果是要回答多选择性问题呢话要怎样呢,比如:“你出生在哪里?波士顿?伦敦?还是悉尼?”

对于这一类问题,需要使用softMax函数,它可以由逻辑回归生成C类不同的值。


这个函数会返回它返回一个C成分的概率向量,填充着每个类别的输出。由于是概率,所以C个元素相加以后的结果是1。这是因为公式是这样构成的:每个可能的输入数据示例必须属于一个输出类,覆盖了100%个可能的例子。如果相加之后小于1,那就意味着可能有一些隐藏的类别;如果是大于1,那就意味着每个样本不仅仅属于一个类别。

我们可以去证明,当分类的数目是2个的话,输出结果的概率和逻辑回归模型的输出一样的。

现在,看看模型的代码。你会发现和之前的模型在初始化的时候有很明显的区别。由于我们的模型计算C个输出,而不是一个,所以我们需要有C个不同的权重组,每组分配有一个。因此,我们会使用一个权重矩阵来代替权重向量。矩阵中的每一行代表每次输入的特征值,同时会有一列代表输出的类别。

我们准备使用softmax对鸢尾花(Iris flower)分类。你可以从https://archive.ics.uci.edu/ml/datasets/Iris中下载数据。该数据集合中包含了4个特征值,和三个可能的输出类别结果。这三种结果分别对应着每一种花卉类型。所以,我们的矩阵应该是4*3大小的。

变量的初始化代码如下:



当然,和你期待的一样,Tensorflow中已经内嵌(embedded)了softmax函数的实现:




关于(Regarding)loss的计算,和逻辑回归(logistic regression)的一样,同样需要考虑拟合(fit)的候选loss function,因为这里输出的也是概率。我们准备再次使用交叉熵(cross-entropy)来用于多分类的计算。

对于计算单个样本i ,交叉熵应该是:







在训练集合上,需要将每个样本输出类别对应的loss相加。注意Yc中等于1的元素应该是所期望的类别,而其余的应该是0.所以其实只有一个loss值被加上,这个loss是用来衡量模型中预测的分类和真事分类的距离。

现在需要根据训练集合来计算所有的loss,我们需要对每次训练样本的loss求和:


在代码的书写上,Tensorflow有两种版本来实现softMax的交叉熵:一种是优化训练集,使得每个样本对应一个类别。例如,我们的训练数据可能只有一个值“人”、“狗”、”树”之类的值。我们用的是tf.nn.sparse_softmax_cross_entropy_with_logits.



另一个版本是允许你的数据集合中每个类别都有概率值。或者例如,您可以使用训练数据,如“60%的被问及的人认为这张照片是关于狗,25%关于树木,其余的人认为是“人””

这个时候需要用tf.nn.softmax_cross_entropy_with_logits.在真实生活中可能会用到这个函数,但是我们不会在简单的案例上使用它。稀疏(spare)版本也是可以用的,因为它的计算速度更快。(P.S.这里的稀疏版本指的就是第一个版本)。注意,模型的最终输出将始终是一个单一的类值,而此版本只是为了支持更灵活的训练数据。

来让我们定义输入方法。我们会再次利用“4.4节逻辑回归”中read_csv函数,但是这次调用的时候,默认值是适合我们的数据集的(我们的数据集都是数字,所以默认值也是数字):



我们不需要使用sparse_softmax_cross_entropy_with_logits来将每个类别转换成新的变量(上一节的逻辑回归是需要转换的),但是我们需要将类别的值控制在0到2之间,因为我们只有三种可能性。在这个数据集合中,类别是字符串的值:“Iris-setosa”, “Iris-versicolor”, or “Iris-virginica”。 为了转换他,我们用tf,pack来创建tensor,同时用tf.equal来对比。然后我们使用tf.argmax到tensor中找到真实值的位置,并且将其有效的转化为0到2的整数。

训练函数和之前的一样,不必多说。

为了评估精确度,我们需要一种有明显变化的sigmoid version:



预测模型会计算测试样本中每个类别的概率。我们会使用tf.argmax函数来选择一个最大可能性的类别作为预测的输出值; 最后,我们会用tf.equal来和期望类别进行比较,并且与sigmoid实例一样使用tf.reduce_mean。

代码运行的准确率是96%;

PS:还有一小节就会结束,等把第四章翻译完毕以后,我会把完整的代码粘贴过来。如果有问题,请评论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容